對於學習任何程式語言來說,最基礎的就是他的型別,由於 TypeScript 是 JavaScript 的超集,所以幾乎 JavaScript 有支援的型別 TypeScript 都有,並且他還多了 Enum 這個型別可以使用。雖然在 TypeScript 中並沒有強制在宣告一個變數時一定要給予他型別,但是,如果我們有給予他型別,當我們不小心 assign (賦值) 錯誤到其他不同型別的變數時,TypeScript 是可以幫我們檢查出來的!光是這點就幫了我們非常大的忙了。
關於基本型別 TypeScript 有以下這幾種:
number 在 TypeScript 包含了 整數, 浮點數, 正數, 負數, 以及 Infinity 或 Nan 都包含在裡面。
關於 number 另一個特別的用法是, 如果有一個很大的數字,我們可以用底線來區隔他,可以讓可讀性提高,例如:
let onMillion = 1_000_000 // 這裡的數值等於 1000000
string 在宣告時,可以使用單引號,也可以使用雙引號
let name: string = "Little Girl";
//or
let name: string = 'Little Girl';
布林值,不是 false, 就是 true.
let isPass1: boolean = true;
let isPass2: boolean = false;
如果有學過其他程式語言,相信一定會對 void 非常熟悉。沒錯,他就是沒有任何型別的意思。通常用在沒有回傳值得函式上面。
例如:
function printLog(message: string): void {
console.log("This is a log for: " + message);
}
Any 代表的是任何型別都有可能,不過這樣一來就又回到 JavaScript 對於型別的處理方式了,所以,即便他真的有這個型別,但還是不建議使用。如果可以,儘量避免使用他。
在預設的情況下,undefine
和 null
是所有型別的子類別, 我們是可以把這兩給值 賦值(assign) 給其他型別的,例如 string
undefine
never
這個型別就跟字面上的意思差不多,永遠不。可能是這個函式永遠不會回傳,或是這個函式永遠不會執行到(不然他就會丟出一個 Error)。
function boo(): never {
while(true) {}
// or
throw new Error(....)
}
當然,如果你如果要宣告一個 never 的變數也是可以,let foo:never;
, 但是你只能 assign never 能接受的值給他,例如永不回傳的函式或會丟出 error 的函式, 其他的值都會在 compile time(編譯時) 跳出錯誤訊息。